# 函数自己调用自己就叫做递归.

# 需求:通过递归的方式计算n的阶乘.

# 5! ===> 5 * 4 * 3 * 2 * 1  ===> 5 * 4!
# 4! ===> 4 * 3 * 2 * 1  ===> 4 * 3!
# 3! ===> 3 * 2 * 1  ===> 3 * 2!
# 2! ===> 2 * 1  ===> 2 * 1!
# 1! ===> 1  

# 总结: n! = n * (n-1)!

'''
1.找到一个临界值(临界条件)  1! = 1
2.总结规律:n! = n * (n-1)!
'''


# n表示传入的数字
def digui(n):
    if n == 1:
        return 1
    return n * digui(n - 1)


print(digui(5))


# 通过递归实现斐波拉契数列   1 1 2 3 5 8 13 21 34 55 ......
def fn(m):
    if m < 3:
        return 1
    return fn(m - 1) + fn(m - 2)


print(fn(8))
